查看原文
其他

第三十三讲 ​R-简单线性回归模型(1)

跟投必得学 投必得医学 2022-05-07

在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。


1. 简单线性回归的概念



简单线性回归

简单线性回归(simple linear-regression)是预测连续变量的最简单,最流行的技术。

它的前提假设是:结果与预测变量之间存在线性关系。


线性回归的数学公式可以写成y = b0 + b1*x + e,其中:

  • b0并b1称为回归beta系数或参数:

    • b0是回归线的截距;是x = 0时y的预测值。

    • b1是回归线的斜率,是与预测变量x相关的回归权重或系数。

  • e是误差项(也称为残差),是y中可以由回归曲线解释的部分。


下图说明了线性回归模型,其中:

  • 最佳拟合回归线为蓝色

  • 截距(b0)和斜率(b1)以绿色显示

  • 误差项(e)用垂直红线表示

从上面的散点图可以看出,并不是所有的数据点都精确地落在拟合的回归线上。有些点在蓝色曲线的上方,有些在蓝色曲线的下方。总体而言,残余误差(e)的平均值约为零。

残差的平方和称为残差平方和(Residual Sum of Squares,RSS)。

拟合回归线周围的点的平均变化称为残差标准(Residual Standard Error,RSE)。这是用于评估拟合回归模型的整体质量的指标之一。残差标准误越低越好。

由于平均误差项为零,因此可以近似估算出结果变量y,如下所示:

y ~ b0 + b1*x


在数学上,确定β系数(b0和b1),以使残差平方和尽可能小。


确定β系数的这种方法在技术上称为最小二乘回归或普通最小二乘回归。


一旦计算出β系数,就进行t检验以检查这些系数是否显着不同于零。当β系数(b1)非零时,表示在预测变量(x)与结果变量(y)之间存在显着关系。


2. 简单线性回归的R实现


2.1 加载所需的R包

加载所需的软件包:

  • tidyverse 用于数据处理和可视化

  • ggpubr:绘制可发表图

library(tidyverse)library(ggpubr)


2.2 数据和问题的例子

我们将使用一组糖尿病的数据,它包含768人糖尿病相关的数据,包括怀孕情况,血糖,血压,皮肤厚度,胰岛素水平,体重指数,糖尿病谱系功能,年龄和糖尿病诊断结果(Outcome)。

提示


如需获取数据diabetes.csv,请关注投必得医学公众号,后台回复“diabetes.csv”获取数据。


导入数据:

my_data<-read.csv('diabetes.csv')

检查数据:

dim(my_data)

[1] 768   9

head(my_data)

输出结果

Pregnancies Glucose BloodPressure SkinThickness Insulin BMI DiabetesPedigreeFunction Age Outcome1 6 148 72 35 0 33.6 0.627 50 12 1 85 66 29 0 26.6 0.351 31 03 8 183 64 0 0 23.3 0.672 32 14 1 89 66 23 94 28.1 0.167 21 05 0 137 40 35 168 43.1 2.288 33 16 5 116 74 0 0 25.6 0.201 30 0

研究问题:根据血糖情况来预测胰岛素水平。


2.3可视化

  • 创建一个散点图,显示血糖与胰岛素水平。

  • 添加平滑线

ggplot(my_data, aes(x = Glucose, y = Insulin)) +geom_point() +stat_smooth()

从图中看出,血糖和胰岛素水平呈线性关系。

但同时,我们也看到血糖和胰岛素都存在数据为0的情况,这在现实生活中,是基本不存在的,所以,我们需要对数据进行一定的数据清理,删除血糖及胰岛素水平为0的数据。

new_data<-my_data[my_data$Glucose>0 & my_data$Insulin >0,]dim(new_data)

#[1] 393   9

然后重新做图

ggplot(new_data, aes(x = Glucose, y = Insulin)) +geom_point() +stat_smooth()

上图显示血糖和胰岛素水平呈线性关系。这是一件好事,因为线性回归的一个重要假设是结果与预测变量之间的关系是线性和可加的。

也可以使用R函数计算两个变量之间的相关系数cor():

cor(new_data$Glucose, new_data$Insulin)

[1] 0.5811862


相关系数测量两个变量x和y之间的关联水平。它的值介于-1(完全负相关:x增加时,y减小)和+1(完全正相关:x增加时,y增大)之间。


详细内容可以参见第七讲 R-相关性分析及作图(第七讲 R-单样本T检验

当相关系数接近0,表明变量之间的关系较弱。较低的相关性(-0.2 <x <0.2)可能表明结果变量(y)的大部分变化都无法由预测变量(x)解释。在这种情况下,我们可能应该寻找更好的预测变量。

在我们的示例中,相关系数足够大,因此我们可以继续构建y作为x的函数的线性模型。


2.4 计算回归模型


简单的线性回归试图根据血糖值来预测胰岛素水平。

线性模型方程可写为:Insulin = b0 + b1 * Glucose

R函数lm()可用于确定线性模型的β系数:

model <- lm(Insulin ~ Glucose, data = new_data)model

输出结果

Call:lm(formula = Insulin ~ Glucose, data = new_data)Coefficients:(Intercept) Glucose-118.643 2.239

结果显示了血糖值的截距和β系数。


2.5 结果解释


从上面的输出中:

  • 估计的回归线方程可写为:Insulin = -118.643 + 2.239 * Glucose

  • 截距(b0)为-118.643。可以将其解释为血糖值为零时胰岛素水平。由于血糖值不可能为0,所以胰岛素水平为负数也是在可理解范围以内。

  • 变量血糖值(b1)的回归β系数(也称为斜率)为2.239 。这意味着,对于等于每增加一个血糖单位值,胰岛素水平增加2.239个单位值。也就是说,当血糖值为100时,胰岛素水平预测为105.257,Insulin = -118.643 + 2.239 * 100 = 105.257 units。

注意

需要注意的是,在实际临床情况下,人的血糖和胰岛素水平都是在一个范围以内波动,不可能像线性回归一样像两端无限延长,因此,我们得到的线性模型,实际上也只适用于建立该线性模型的实验数据的范围以内的数据。



2.6 回归线

要将回归线添加到散点图上,可以使用函数stat_smooth()[ggplot2]。

默认情况下,拟合线周围带有置信区间。置信带反映了该线的不确定性。如果您不想显示它,请se = FALSE在函数中指定选项stat_smooth()。

ggplot(new_data, aes(Glucose, Insulin)) +geom_point() +stat_smooth(method = lm)

除了建立这个回归方程式以外,我们还需要知道这个方程式中的2.239与0是否有统计学差异。

也就是说,我们现在虽然方程式已经建立,但是我们需要进一步通过统计学方法来讨论这个β系数是否有统计学意义。

关于这个内容,我们将在下一讲跟跟大家具体分享。并且进一步来深入研究这个回归方程包含的更深层次的意义,比如模型拟合质量,模型含义,模型内包含的其他有意义内容。

参考内容:

1. Alboukadel Kassambara, Machine Learning Essentials: Practical Guide in R



好了,本期讲解就先到这里。小伙伴们赶紧试起来吧。

在之后的更新中,我们会进一步为您介绍R的入门,以及常用生物统计方法和R实现。欢迎关注,投必得医学手把手带您走入R和生物统计的世界。

提前预告一下,下一讲我们继续讲解简单线性回归模型


第一讲 R-基本介绍及安装

第二讲 R-编程基础-运算、数据类型和向量等基本介绍

第三讲 R编程基础-矩阵和数据框

第四讲 R-描述性统计分析

第五讲 R-数据描述性统计分析作图

第六讲 R-数据正态分布检验

第七讲 R-相关性分析及作图

第八讲 R-单样本T检验

第九讲 R-单样本Wilcoxon检验

第十讲 R-两独立样本t检验

第十一讲 R-两独立样本Wilcoxon检验

第十二讲 R-配对样本t检验

第十三讲 R-配对样本Wilcoxon检验

第十四讲 R-单因素方差分析1

第十五讲 R-单因素方差分析2

第十六讲 R-双向方差分析1

第十七讲 R-双向方差分析2

第十八讲 R-多元方差分析

第十九讲 F检验:两样本方差比较

第二十讲 多样本间的方差比较

第二十一讲 单比例的Z检验

第二十二讲 两比例Z检验

第二十三讲 R-卡方检验之拟合度检验

第二十四讲  R-卡方检验之独立性检验

第二十五讲 生存分析基础概念

第二十六讲 R-生存分析:绘制KM生存曲线

第二十七讲 R-生存分析:生存函数的假设检验

第二十八讲 R-Cox比例风险模型(1)

第二十九讲 R-Cox比例风险模型(2)

第三十讲  R-Cox比例风险模型的假设检验条件

第三十一讲 R-机器学习与回归概述

第三十二讲 R-回归分析概述

当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。


快扫二维码撩客服,

带你进入投必得医学交流群,

让我们共同进步!

↓↓


- END -


长按二维码关注「投必得医学」,更多科研干货在等你!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存